Downloading of information is a commonplace activity in data processing systems with distributed architecture. In this context, different server computers (or simply servers) manage shared information. This information can be accessed by a great number of users by means of their own client computers (or simply clients), which are connected to the servers in a network; for this purpose, the information selected by each user must be transferred from the relevant server to his/her client. A typical example is the Internet, wherein many servers control large databases; in this case, each client may submit a query to a server for retrieving records of a specific database—suitably filtered and sorted.
However, the time required to download the selected information (from the server to the client through the network) may be a problem in an interactive application—wherein the selected information must be displayed on a monitor of the client in “real time”; indeed, this substantially increases the response time of the application (from the submission of a request to the availability of the corresponding result), with a deleterious effect on its usability.
The problem is particular acute when a large amount of information must be downloaded from the server to the client (such as in the case of a long query executed on a big database). Moreover, the problem is exacerbated when the server is far away from the client and/or a relatively slow connection is available between them (as it often occurs in the Internet).
Page-based navigation techniques have been proposed to mitigate the above-mentioned drawbacks. In this case, the selected information is logically partitioned into blocks—each one consisting of the amount of information that fits a page being displayed on the monitor of the client. In this way, a first page is provided to the user as soon as it is received from the server (without waiting for the complete downloading of the selected information); moreover, the user may also move to next pages immediately (if they are already available).
In a typical user interface program (e.g. web-based) a large table is usually browsed by breaking the table itself in smaller consecutive pages. In this way the user can quickly get partial results and start its analysis without waiting for the entire table to be transferred at the user interface program.
Such approach tries to minimize what is usually called the user interface responsiveness. Such property is defined as the time elapsed from the user request submission to the result termination which allows the user to submit a new request. The provided result may potentially be a convenient and consistent part of the result which allows the user to submit a new request to get a new part of the same result. Common scenarios require the table to be sorted in order to better and quicker analyze the result. In some cases the user is prevalently interested to the first page of the sorted result which are usually enough to take the appropriate action. In other instances a user might start analyzing the first sorted pages and then decide to move to next pages searching what is looking for. Some canonical sorting algorithms (e.g. the bubble sort) are conceived to produce the first sorted records as soon as possible even if the sort operation is not completed. Even if such kind of algorithms matches the above described needs, they could become impracticable because of their computational complexity (e.g. the bubble sort in the worst case has a O(n2) complexity). On the other side, some other algorithms based on the divide and conquer technique (e.g. the merge sort algorithm) have a better computational complexity (usually O(n.log(n)) complexity) but the sorted result can be available only after the last iteration when the algorithm has completed. From such analysis each kind of algorithms only matches a part of the requirements for the above described needs.
An improved method which combines the advantages of both families of algorithms would be highly appreciated.
It is an object of the present invention to overcome the above described drawbacks of the prior art.